#ifndef yakuza_hpp
#define yakuza_hpp

#include "projet.hpp"

using namespace std;

//////////////////YAKUZA////////////////////
class yakuza : public humain {

  int reputation;
  string clan;

public:
  void donner(float,humain *){}

  yakuza():humain(), reputation(0), clan("") {
  
  }

  yakuza(const char * n ,float argt,string b,string c):humain(n,argt, b),reputation(0), clan(c) {
   
  }


  yakuza(const yakuza &y) : humain(y), reputation(y.reputation), clan(y.clan) {}
  
  yakuza & operator = (const yakuza &y) {
    if(this !=&y) {
      this->~yakuza();
      humain *h=this;
      *h=y;
      reputation=y.reputation;
      clan=y.clan;
    }
    return *this;
  }

  void gagner()
  {
    reputation++;
    ostringstream oss;
    oss<<"HAHA j'ai battu un chevalier !!!";
    parler(oss.str());
  }

  int perdre()
  {
    reputation--;
    ostringstream oss;
    oss<<"Oh non ! Jme suis fais battre par un ronin... j'ai perdu "<<get_argent()<<" euros";
    parler(oss.str());
    reputation--;
    int a=get_argent();
    set_argent(0);
    return a;
  }

 
  int get_rep() const { return reputation;}
  string get_clan() const { return clan;}


  void action (humain *h) {

    if (typeid(*h)==typeid(commercant))
    
      extorquer(*((commercant *)h));
    
  }

  void extorquer(commercant &c)
  {
    set_argent(get_argent()+c.get_argent());
    c.humain::perdre(c.get_argent());
    reputation++;
    ostringstream oss;
    oss<<"HAHA j'ai extorqué un commercant !!";
    parler(oss.str());
  }

  void dire_bonjour() const
  {
    ostringstream oss;
    humain::dire_bonjour();
    oss<<"Je suis du clan des "<<clan;
    parler(oss.str());
  }

};

#endif
